package UI;

import javax.swing.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.*;

/*
* 个人信息界面*/
public class PersonalInformationUI extends JFrame implements MouseListener {
    /*
    * 创建组件*/
    JButton editInformation = new JButton("修改个人信息");
    JButton returnHome = new JButton("返回主页");

    //用户名标签,个人简介标签,钱包余额标签
    JLabel userNameLabel,informationLabel,moneyLabel;
    //用户名文本框,个人简介文本框,钱包余额文本框
    JTextField userNameText,informationText,moneyText;
    public PersonalInformationUI() {
        WholeUI wholeUI = new WholeUI(this) {
            @Override
            protected void elseWindow(JFrame jFrame) {
                jFrame.setTitle("个人信息");
                jFrame.setSize(600, 500);
            }
        };

        loadUI();
        //加载个人信息
        /**
        * (可乐盒子)
        * 从PersonalInformation里的
        * 用户名的个人简介.txt
        * 用户名用  userNameText.getText() 调用
        * 获取个人简介
        * 并显示在文本框中
         *
        * 注意第100行代码也要写
         *
        *
        * */
        try {
            //获取用户名
            String userName = userNameText.getText();
            //获取个人简介的文件
            FileInputStream fis = new FileInputStream("documents/PersonalInformation/"+userName+"的个人介绍.txt");
            //使用转换流
            BufferedInputStream bis= new BufferedInputStream(fis);
            //读取文件的大小
            byte[] b = new byte[bis.available()];
            //读取个人简介
            bis.read(b);
            //将个人简介转换为字符串
            String information = new String(b);
            //设置个人简介
            informationText.setText(information);
            //回收资源
            bis.close();
            fis.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private void loadUI() {
        /*加载组件*/

        userNameLabel = new JLabel("用户名:");
        informationLabel = new JLabel("个人简介:");
        moneyLabel = new JLabel("钱包余额:");
        userNameText = new JTextField(20);
        informationText = new JTextField(200);
        moneyText = new JTextField(20);
        //用户名
        userNameText.setText(LoginUI.userNameText.getText());


        //个人简介(从数据库调用,要修改)
        informationText.setText("这个人很懒,什么都没留下~");


        //钱包余额(从数据库调用,要修改)
        moneyText.setText("0");

        //设置位置大小
        userNameLabel.setBounds(50, 50, 100, 30);
        userNameText.setBounds(150, 50, 200, 30);
        informationLabel.setBounds(50, 100, 100, 30);
        informationText.setBounds(150, 100, 300, 90);
        moneyLabel.setBounds(50, 210, 100, 30);
        moneyText.setBounds(150, 210, 200, 30);
        editInformation.setBounds(50, 300, 100, 30);
        returnHome.setBounds(250, 300, 100, 30);

        //绑定事件
        editInformation.addMouseListener(this);
        returnHome.addMouseListener(this);

        //禁止修改静态数据
        userNameText.setEditable(false);
        moneyText.setEditable(false);

        //添加组件
        this.getContentPane().add(userNameLabel);
        this.getContentPane().add(userNameText);
        this.getContentPane().add(informationLabel);
        this.getContentPane().add(informationText);
        this.getContentPane().add(moneyLabel);
        this.getContentPane().add(moneyText);
        this.getContentPane().add(editInformation);
        this.getContentPane().add(returnHome);
    }


    //鼠标事件(修改个人信息和返回主界面)
    @Override
    public void mouseClicked(MouseEvent e) {
        if(e.getSource()==editInformation){

            /**
             * (可乐盒子)
             * 调用方法修改个人简介
            * 点击修改后当前的文本框的内容会被上传到本地PersonalInformation*/
            try {
                //获取修改后的个人简介
                String AfterEdit = informationText.getText();
                //获取用户名
                String UserName = userNameText.getText();
                //上传的地点
                String FilePath = "documents/PersonalInformation/"+UserName+"的个人介绍.txt";
                BufferedWriter bw = new BufferedWriter(new FileWriter(FilePath));
                //将修改后的个人简介上传到文件
                bw.write(AfterEdit);
                //回收资源
                bw.close();
                //弹出提示框
                JOptionPane.showMessageDialog(null,"修改成功!");
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }else if(e.getSource()==returnHome){
            //返回主页
            HomeUI homeUI = new HomeUI();
            this.dispose();
        }

    }

    @Override
    public void mousePressed(MouseEvent e) {

    }

    @Override
    public void mouseReleased(MouseEvent e) {

    }

    @Override
    public void mouseEntered(MouseEvent e) {

    }

    @Override
    public void mouseExited(MouseEvent e) {

    }
}
